﻿///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
	
#Область ПрограммныйИнтерфейс

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов

// Возвращает реквизиты объекта, которые не рекомендуется редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
//  Массив - список имен реквизитов объекта.
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
	
	НеРедактируемыеРеквизиты = Новый Массив;
	НеРедактируемыеРеквизиты.Добавить("Логин");
	НеРедактируемыеРеквизиты.Добавить("Автор");
	
	Возврат НеРедактируемыеРеквизиты;
	
КонецФункции

// Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов

#КонецОбласти

#КонецОбласти

#Область ОбработчикиСобытий

Процедура ПередЗаписью(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	Наименование = СокрЛП(Логин) + " на " + СокрЛП(Владелец);
	
	Если НЕ ЭтоНовый() И НЕ Отказ Тогда
		ДанныеСсылки = Справочники.УчетныеЗаписиDSS.ПолучитьДанныеСсылки(Ссылка);
		
		Если ДанныеСсылки.Владелец <> Владелец
			ИЛИ ДанныеСсылки.Логин <> Логин
			ИЛИ ПометкаУдаления Тогда
			СервисКриптографииDSSСлужебный.ОчиститьСписокСертификатов(Ссылка);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
КонецПроцедуры

Процедура ПриКопировании(ОбъектКопирования)
	
	Логин = "";
	ПервичнаяАутентификация = Неопределено;
	СостояниеЗаявления = Перечисления.СостоянияЗаявленияУчетнойЗаписиDSS.НеПодготовлено;
	СодержаниеЗаявления = Неопределено;
	
КонецПроцедуры

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
	
	КлючиПроверки = СервисКриптографииDSSСлужебный.КлючиУникальностиСправочника("УчетныеЗаписиDSS");
	Если ЗначениеЗаполнено(КлючиПроверки) Тогда
		ДанныеКлюча = Новый Структура(КлючиПроверки);
		ЗаполнитьЗначенияСвойств(ДанныеКлюча, ЭтотОбъект);
		НашлиДубль = СервисКриптографииDSSСлужебный.ПроверитьДублированиеЛогинов(Ссылка, ДанныеКлюча);
		Если ЗначениеЗаполнено(НашлиДубль) Тогда
			ТекстСообщения = НСтр("ru = 'Обнаружена дублирующая запись в справочнике Учетные записи DSS:'") + " " + Логин;
			ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ЭтотОбъект, "Логин", "Объект", Отказ);
		КонецЕсли;
	КонецЕсли;	
	
КонецПроцедуры

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
	
	Если ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.ЭкземплярыСервераDSS") Тогда
		Владелец = ДанныеЗаполнения;
	КонецЕсли;
	
	Автор = Пользователи.ТекущийПользователь();
	
КонецПроцедуры

#КонецОбласти

#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли